home *** CD-ROM | disk | FTP | other *** search
/ boe.pres.k12.wv.us / boe.pres.k12.wv.us.zip / boe.pres.k12.wv.us / Utilities / Finishlynx / Disk 2 / _SETUP.2 / Group4 / DakMDP.lss < prev    next >
Text File  |  2002-05-16  |  15KB  |  412 lines

  1. ; Defaults: 19200,8,N,1
  2. ;
  3. ; Lynx Scoreboard Script
  4. ;
  5. ; Copyright (c) 1995-2002 Lynx System Developers, Inc.
  6. ;
  7. ; Written by Kirk Sigel
  8. ;
  9. ; multidrop protocol for Daktronics Glow Cube TI-2009 display (and others)
  10. ; written by Todd Chamoy
  11. ; last modified 16 May 2002
  12. ; turned 8th segment on in all digits
  13. ; to turn the 8th segment off, replace all occurrences of
  14. ; \bf\86\db\cf\e6\ed\fd\87\ff\e7 with \3f\06\5b\4f\66\6d\7d\07\7f\67
  15. ; Note: script will not work properly with time precision set to 1/10000
  16. ;
  17. ; Notes:
  18. ;  + Empty lines and lines that start with a semicolon are ignored.
  19. ;  + Lines that start with two semicolons indicate a section header.
  20. ;    They must be one of the following:
  21. ;      ;;Initialization
  22. ;      ;;TimeRunning
  23. ;      ;;TimeStopped
  24. ;      ;;TimeGun
  25. ;      ;;TimeBreak
  26. ;      ;;TimeUpdate
  27. ;      ;;Wind
  28. ;      ;;TimeOfDay
  29. ;      ;;ResultsHeader
  30. ;      ;;ResultsTrailer
  31. ;      ;;Result
  32. ;      ;;StartListHeader
  33. ;      ;;StartListTrailer
  34. ;      ;;StartList
  35. ;      ;;MessageHeader
  36. ;      ;;MessageTrailer
  37. ;      ;;Message
  38. ;    Sections may be omitted, appear in any order, and occur more than once.
  39. ;  + Format lines must begin with a value indicating which variable
  40. ;    they want to access. The special code \00 indicates that no variable
  41. ;    is being requested. If a variable is requested it will be inserted where
  42. ;    a '%s' printf style format specifier appears. There can only be one '%s'
  43. ;    specifier in lines requesting a variable and no other printf format
  44. ;    specifiers may appear. Remember, lines requesting a variable are used as
  45. ;    a printf format string and therefore must behave as such. Lines not 
  46. ;    requesting variables (code \00) can do whatever they want as these 
  47. ;    lines are not fed to a printf statement.
  48. ;  + Arbitrary 8 bit values are entered as \hh where h is a lowercase hex
  49. ;    digit. Note that h must be lowercase.
  50. ;  + Format lines can have the following commands embedded in them.
  51. ;    Note that only 10 registers (indexed 0-9) are currently implemented.
  52. ;     \U\hh   Set the 'U' value to hh. It is reset after the next command.
  53. ;     \Ui\hh  Set the 'U' value to register[hh].
  54. ;     \X\hh   Set the 'X' value to hh. It is reset after the next command.
  55. ;     \Xi\hh  Set the 'X' value to register[hh].
  56. ;     \=\hh   register[hh] = {register[U]|X|1}                 (assign)
  57. ;     \*\hh   register[hh] = register[hh] * {register[U]|X|1}  (multiply)
  58. ;     \/\hh   register[hh] = register[hh] / {register[U]|X|1}  (divide)
  59. ;     \#\hh   register[hh] = register[hh] # {register[U]|X|1}  (modulus)
  60. ;     \+\hh   register[hh] = register[hh] + {register[U]|X|1}  (add)
  61. ;     \-\hh   register[hh] = register[hh] - {register[U]|X|1}  (subtract)
  62. ;     \<\hh   register[hh] = register[hh] << {register[U]|X|1} (shift left)
  63. ;     \>\hh   register[hh] = register[hh] >> {register[U]|X|1} (shift right)
  64. ;     \&\hh   register[hh] = register[hh] & {register[U]|X|1}  (bit and)
  65. ;     \|\hh   register[hh] = register[hh] | {register[U]|X|1}  (bit or)
  66. ;     \^\hh   register[hh] = register[hh] ^ {register[U]|X|1}  (bit xor)
  67. ;     \~\hh   register[hh] = ~register[hh]                     (bit invert)
  68. ;     \F\hh   register[hh] = The result of running Function {U|0} on the 
  69. ;             next {X|<eol>} characters.
  70. ;              \U\00  IDS checksum.
  71. ;              \U\01  XOR checksum. register[hh] is used as the seed value.
  72. ;              \U\02  ADD checksum. register[hh] is used as the seed value.
  73. ;              \U\03  CRC-16. register[hh] is used as the seed value
  74. ;                       and register[hh+1] is the polynomial.
  75. ;              \U\04  CRC-32. register[hh] is used as the seed value
  76. ;                       and register[hh+1] is the polynomial.
  77. ;     \O\hh   Output register[hh] as an {X|1} byte value using method {U|0}.
  78. ;              \U\00  Binary little-endian (Intel byte order).
  79. ;              \U\01  Binary big-endian (Motorola byte order).
  80. ;              \U\02  ASCII text right justified space padded.
  81. ;              \U\03  ASCII text right justified zero padded.
  82. ;              \U\04  ASCII text left justified space padded.
  83. ;              \U\05  ASCII text left justified zero padded.
  84. ;     \S\hh   Scan the next {X|1} bytes into register[hh] using method {U|0}.
  85. ;              \U\00  ASCII text base 10.
  86. ;              \U\01  Binary little-endian (Intel byte order).
  87. ;              \U\02  Binary big-endian (Motorola byte order).
  88. ;     \P\hh   Run Procedure hh on the next {X|<eol>} characters.
  89. ;              \P\00  Reverse characters.
  90. ;              \P\01  Convert characters to Colorado Time format. Register[1]
  91. ;                       is the current character position on entry and the
  92. ;                       next character position on exit.
  93. ;              \P\02  Convert characters to Daktronics AllSport format.
  94. ;     \B\hh   Delete {register[U]|hh} (to beginning of line if zero) characters 
  95. ;             before the cursor or until the string contains X characters.
  96. ;     \D\hh   Delete {register[U]|hh} (to end of line if zero) characters 
  97. ;             at the cursor or until the string contains X characters.
  98. ;     \I\hh   Insert {register[U]|hh} spaces at the cursor or until the string
  99. ;             contains X characters.
  100. ;     \Ic\hh  Insert {register[U]|hh} {X's|spaces} at the cursor.
  101. ;     \L\hh   Move the cursor {register[U]|hh} positions to the left (to the 
  102. ;             beginning of the line if zero).
  103. ;     \R\hh   Move the cursor {register[U]|hh} positions to the right (to the
  104. ;             end of the line if zero).
  105. ;    Note that numbers 0 thru 9 can be entered directly for single character
  106. ;    embedded commands. For example, '\U\04' is the same as '\U4' and 
  107. ;    '\=\01' is the same as '\=1'.
  108. ;  + Be very careful about whitespace in each format line. Characters other
  109. ;    than '%s' specifiers and embedded commands and values will be sent
  110. ;    exactly as they appear on the line. This means, for instance, that using
  111. ;    tabs to make a line 'look right' in you favorite editor will cause
  112. ;    tabs to be sent to the scoreboard instead of the equivalent number of
  113. ;    spaces (probably not what you wanted).
  114. ;
  115. ; The format lines follow.
  116.  
  117. ;;Initialization
  118. ; This is sent once to initialize the scoreboard.
  119. ; Line codes:
  120. ;  \00 No variable
  121. ;CLEAR THE BOARD
  122.  
  123. ;HEADER
  124. ;initialize register 2 to 0 (for checksum)
  125. \00\X0\=2
  126. ;sync byte 1
  127. \00\55\L1\U1\S3\U3\-2
  128. ;sync byte 2
  129. \00\aa\L1\U1\S3\U3\-2
  130. ;address
  131. \00\16\L1\U1\S3\U3\-2
  132. ;count (1 command byte + 7 digits + punctuation)
  133. \00\09\L1\U1\S3\U3\-2
  134. ;tag/command byte
  135. \00\O1\L1\U1\S3\U3\-2
  136. ;checksum 1
  137. \00\O2
  138.  
  139. ;DATA
  140. ;initialize register 2 to 0 (for checksum)
  141. \00\X0\=2
  142. ;control byte
  143. \00\22\L0\U1\S3\U3\-2
  144. ;8 blank bytes
  145. \00\00\00\00\00\00\00\00\00
  146. ;checksum 2
  147. \00\O2
  148. ;increment tag nibble
  149. \00\X\10\+1
  150.  
  151. ;;TimeRunning
  152. ; This is sent approximately 10 times per second.
  153. ; Line codes:
  154. ;  \00  No variable
  155. ;  \01  Formatted time
  156. ;  \02  Binary time in milliseconds (as a 4 byte little endian integer)
  157. ; Setting register[0] to 1 in a format line will cause that line and
  158. ; subsequent lines to only be sent once per second (when the second's 
  159. ; digit changes) instead of approximately 10 times per second. Setting
  160. ; register[0] to 0 will resume normal operation for remaining lines.
  161.  
  162. ;HEADER
  163. ;initialize register 2 to 0 (for checksum)
  164. \00\X0\=2
  165. ;sync byte 1
  166. \00\55\L1\U1\S3\U3\-2
  167. ;sync byte 2
  168. \00\aa\L1\U1\S3\U3\-2
  169. ;address
  170. \00\16\L1\U1\S3\U3\-2
  171. ;count (1 command byte + 7 digits + punctuation)
  172. \00\09\L1\U1\S3\U3\-2
  173. ;tag/command byte
  174. \00\O1\L1\U1\S3\U3\-2
  175. ;checksum 1
  176. \00\O2
  177.  
  178. ;DATA
  179. ;initialize register 2 to 0 (for checksum)
  180. \00\X0\=2
  181. ;control byte
  182. \00\22\L0\U1\S3\U3\-2
  183. ;Hh:Mm:Ss.abc
  184. ;M
  185. \01%12.12s\X\0a\=4\L0\D3\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  186. ;m
  187. \01%12.12s\X\0a\=4\L0\D4\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  188. ;S
  189. \01%12.12s\X\0a\=4\L0\D6\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  190. ;s
  191. \01%12.12s\X\0a\=4\L0\D7\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  192. ;a
  193. \01%12.12s\X\0a\=4\L0\D9\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  194. ;6th byte is blank (no hundredths)
  195. \00\00
  196. ;7th byte is h
  197. \01%12.12s\X\0a\=4\L0\D1\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  198. ;8th byte is punctuation (_. if m is blank, :. otherwise)
  199. \01%12.12s\X\0a\=4\L0\D4\S4\D0\+4 \45\45\45\45\45\45\45\45\45\45\40\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  200. ;checksum 2
  201. \00\O2
  202. ;increment tag nibble
  203. \00\X\10\+1
  204.  
  205. ;;TimeStopped
  206. ; This is sent when the time is stopped by a beam break.
  207. ; Line codes are identical to the TimeRunning line codes.
  208.  
  209. ;HEADER
  210. ;initialize register 2 to 0 (for checksum)
  211. \00\X0\=2
  212. ;sync byte 1
  213. \00\55\L1\U1\S3\U3\-2
  214. ;sync byte 2
  215. \00\aa\L1\U1\S3\U3\-2
  216. ;address
  217. \00\16\L1\U1\S3\U3\-2
  218. ;count (1 command byte + 7 digits + punctuation)
  219. \00\09\L1\U1\S3\U3\-2
  220. ;tag/command byte
  221. \00\O1\L1\U1\S3\U3\-2
  222. ;checksum 1
  223. \00\O2
  224.  
  225. ;DATA
  226. ;initialize register 2 to 0 (for checksum)
  227. \00\X0\=2
  228. ;control byte
  229. \00\22\L0\U1\S3\U3\-2
  230. ;Hh:Mm:Ss.abc
  231. ;M
  232. \01%12.12s\X\0a\=4\L0\D3\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  233. ;m
  234. \01%12.12s\X\0a\=4\L0\D4\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  235. ;S
  236. \01%12.12s\X\0a\=4\L0\D6\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  237. ;s
  238. \01%12.12s\X\0a\=4\L0\D7\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  239. ;a
  240. \01%12.12s\X\0a\=4\L0\D9\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  241. ;b
  242. \01%12.12s\X\0a\=4\L0\D\0a\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  243. ;7th byte is h
  244. \01%12.12s\X\0a\=4\L0\D1\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  245. ;8th byte is punctuation (_. if m is blank, :. otherwise)
  246. \01%12.12s\X\0a\=4\L0\D4\S4\D0\+4 \45\45\45\45\45\45\45\45\45\45\40\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  247. ;checksum 2
  248. \00\O2
  249. ;increment tag nibble
  250. \00\X\10\+1
  251.  
  252. ;;TimeOfDay
  253. ; This is sent when the 'Send time of day' option is checked in the
  254. ; Scoreboard pull down menu.
  255. ; Line codes are identical to the TimeRunning line codes.
  256. ;
  257. ;
  258. ;HEADER
  259. ;initialize register 2 to 0 (for checksum)
  260. \00\X0\=2
  261. ;sync byte 1
  262. \00\55\L1\U1\S3\U3\-2
  263. ;sync byte 2
  264. \00\aa\L1\U1\S3\U3\-2
  265. ;address
  266. \00\16\L1\U1\S3\U3\-2
  267. ;count (1 command byte + 7 digits + punctuation)
  268. \00\09\L1\U1\S3\U3\-2
  269. ;tag/command byte
  270. \00\O1\L1\U1\S3\U3\-2
  271. ;checksum 1
  272. \00\O2
  273.  
  274. ;DATA
  275. ;initialize register 2 to 0 (for checksum)
  276. \00\X0\=2
  277. ;control byte
  278. \00\22\L0\U1\S3\U3\-2
  279. ;time field is Hh:Mm:Ss.abc
  280. ;H
  281. \01%12.12s\X\0a\=4\L0\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  282. ;h
  283. \01%12.12s\X\0a\=4\L0\D1\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  284. ;M
  285. \01%12.12s\X\0a\=4\L0\D3\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  286. ;m
  287. \01%12.12s\X\0a\=4\L0\D4\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  288. ;S
  289. \01%12.12s\X\0a\=4\L0\D6\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  290. ;s
  291. \01%12.12s\X\0a\=4\L0\D7\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  292. ;7th byte is blank (attempt)
  293. \00\00\L0\U1\S3\U3\-2
  294. ;8th byte is punctuation (always :: for T.o.D.)
  295. \00\55\L0\U1\S3\U3\-2
  296.  
  297. ;checksum 2
  298. \00\O2
  299. ;increment tag nibble
  300. \00\X\10\+1
  301.  
  302. ;;Result
  303. ; This is sent once for each result line displayed on the scoreboard.
  304. ; Line codes:
  305. ;  \00  No variable
  306. ;  \01  Place
  307. ;  \02  Lane
  308. ;  \03  Id
  309. ;  \04  Name
  310. ;  \05  Affiliation
  311. ;  \06  Time
  312. ;  \07  Delta Time
  313. ;  \08  Cumulative Split Time
  314. ;  \09  Last Split Time
  315. ;  \0a  Laps To Go
  316. ;  \0b  License
  317. ;  \0c  ReacTime
  318. ;  \0d  Speed
  319. ;  \0e  Pace
  320. ; Register[0] is initialized with the index of the current result line and
  321. ; will range from 0 through PageSize - 1.
  322. ;
  323. ;HEADER
  324. ;initialize register 2 to 0 (for checksum)
  325. \00\X0\=2
  326. ;sync byte 1
  327. \00\55\L1\U1\S3\U3\-2
  328. ;sync byte 2
  329. \00\aa\L1\U1\S3\U3\-2
  330. ;address
  331. \00\16\L1\U1\S3\U3\-2
  332. ;count (1 command byte + 7 digits + punctuation)
  333. \00\09\L1\U1\S3\U3\-2
  334. ;tag/command byte
  335. \00\O1\L1\U1\S3\U3\-2
  336. ;checksum 1
  337. \00\O2
  338.  
  339. ;DATA
  340. ;initialize register 2 to 0 (for checksum)
  341. \00\X0\=2
  342. ;control byte
  343. \00\22\L0\U1\S3\U3\-2
  344. ;Hh:Mm:Ss.abc
  345. ;M
  346. \06%12.12s\X\0a\=4\L0\D3\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  347. ;m
  348. \06%12.12s\X\0a\=4\L0\D4\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  349. ;S
  350. \06%12.12s\X\0a\=4\L0\D6\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  351. ;s
  352. \06%12.12s\X\0a\=4\L0\D7\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  353. ;a
  354. \06%12.12s\X\0a\=4\L0\D9\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  355. ;b
  356. \06%12.12s\X\0a\=4\L0\D\0a\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  357. ;7th byte can be place, lane, or blank (uncomment the one you want)
  358. \01%1.1s\X\0a\=4\L0\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  359. ;\02%1.1s\X\0a\=4\L0\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  360. ;\00\00
  361. ;8th byte is punctuation (_. if m is blank, :. otherwise)
  362. \06%12.12s\X\0a\=4\L0\D4\S4\D0\+4 \45\45\45\45\45\45\45\45\45\45\40\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  363. ;checksum 2
  364. \00\O2
  365. ;increment tag nibble
  366. \00\X\10\+1
  367.  
  368. ;;Message
  369. ; This is sent once for each message line displayed on the scoreboard.
  370. ; Line codes:
  371. ;  \00  No variable
  372. ;  \01  Text
  373. ; Register[0] is initialized with the index of the current message line and
  374. ; will range from 0 through <number of lines> - 1.
  375.  
  376. ;HEADER
  377. ;initialize register 2 to 0 (for checksum)
  378. \00\X0\=2
  379. ;sync byte 1
  380. \00\55\L1\U1\S3\U3\-2
  381. ;sync byte 2
  382. \00\aa\L1\U1\S3\U3\-2
  383. ;address
  384. \00\16\L1\U1\S3\U3\-2
  385. ;count (1 command byte + 7 digits + punctuation)
  386. \00\09\L1\U1\S3\U3\-2
  387. ;tag/command byte
  388. \00\O1\L1\U1\S3\U3\-2
  389. ;checksum 1
  390. \00\O2
  391.  
  392. ;DATA
  393. ;initialize register 2 to 0 (for checksum)
  394. \00\X0\=2
  395. ;control byte
  396. \00\22\L0\U1\S3\U3\-2
  397.  
  398. \01%7.7s\X\0a\=4\L0\D1\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  399. \01%7.7s\X\0a\=4\L0\D2\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  400. \01%7.7s\X\0a\=4\L0\D3\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  401. \01%7.7s\X\0a\=4\L0\D4\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  402. \01%7.7s\X\0a\=4\L0\D5\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  403. \01%7.7s\X\0a\=4\L0\D6\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  404. \01%7.7s\X\0a\=4\L0\S4\D0\+4 \bf\86\db\cf\e6\ed\fd\87\ff\e7\00\L0\U4\R0\B0\R1\D0\L0\U1\S3\U3\-2
  405. ;no punctuation (8th byte)
  406. \00\00
  407.  
  408. ;checksum 2
  409. \00\O2
  410. ;increment tag nibble
  411. \00\X\10\+1
  412.